﻿//给出n个字符串，从第1个字符串一直到第n个字符串每个串取一个字母来构成一个新字符串，
//新字符串的第i个字母只能从第i行的字符串中选出，这样就得到了一个新的长度为n的字符串，
//请问这个字符串是否有可能为回文字符串？
//
//输入描述 :
//第一行一个数字𝑡,1≤t≤50, 代表测试数据的组数
//每组测试数据先给出一个数字 n，然后接下来n行每行一个只由小写字母组成的字符串si
//1≤n≤100, 1≤∣si∣≤50
//输出描述 :
//在一行中输出 “Yes” or “No”

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int t, n;
string s;
bool vis[110][26];
bool check(int left, int right)
{
	for (int i = 0; i < 26; i++)
	{
		if (vis[left][i] && vis[right][i]) return true;
	}
	return false;
}
int main()
{
	cin >> t;
	while (t--)
	{
		memset(vis, 0, sizeof vis); // 清空之前的数据
		cin >> n;
		for (int i = 0; i < n; i++)
		{
			cin >> s;
			for (auto ch : s)
			{
				vis[i][ch - 'a'] = true;
			}
		}

		int left = 0, right = n - 1;
		while (left < right)
		{
			if (!check(left, right)) break;
			left++; right--;
		}
		if (left < right) cout << "No" << endl;
		else cout << "Yes" << endl;
	}

	return 0;
}




